import ray

# 1. 初始化Ray（本地模式，自动启动集群）
# 无参数时默认使用本地所有资源，适合快速测试
ray.init()

# 2. 定义分布式函数（用@ray.remote装饰）
# 被装饰的函数会在Ray的工作进程中执行（支持并行/分布式）
@ray.remote
def simple_task(x):
    """简单的分布式任务：返回输入值的平方"""
    return x * x

# 3. 提交任务并获取结果（两种方式）
# 方式1：异步提交单个任务（返回ObjectRef，类似未来对象）
task_ref = simple_task.remote(5)
result = ray.get(task_ref)  # 阻塞获取结果
print(f"单个任务结果：5² = {result}")

# 方式2：批量提交多个任务（自动并行执行）
task_refs = [simple_task.remote(i) for i in range(10)]
results = ray.get(task_refs)  # 批量获取所有结果
print(f"批量任务结果：0²~9² = {results}")

# 4. 关闭Ray集群（可选，程序结束时自动关闭）
ray.shutdown()